package net.telesing.tcmc.back.dao.user;


import org.nutz.dao.Condition;

import java.util.List;

/**
 * Created by 一凡 on 2015/11/3.
 */
public interface UGeneralDao {
    /**
     * @param obj
     * @param <T>
     * @return
     */
    <T> T insert(T obj);

    /**
     * @param obj
     * @param <T>
     * @return
     */
    <T> int modified(T obj);

    /**
     * @param tClass
     * @param id
     * @param <T>
     * @return
     */
    <T> int delete(Class<T> tClass, Long id);

    /**
     *
     * @param tClass
     * @param <T>
     * @return
     */
    <T> int delete(Class<T> tClass);

    /**
     *
     * @param tClass
     * @param condition
     * @param <T>
     * @return
     */
    <T> T fetch(Class<T> tClass,Condition condition);

    /**
     *
     * @param tClass
     * @param sql
     * @param <T>
     * @return
     */
    <T> T fetch(Class<T> tClass,String sql);

    /**
     *
     * @param tClass
     * @param id
     * @param <T>
     * @return
     */
    <T> T fetch(Class<T> tClass,Long id);
    /**
     *
     * @param tClass
     * @param condition
     * @param <T>
     * @return
     */
    <T> List<T> query(Class<T> tClass,Condition condition);

    /**
     *
     * @param tClass
     * @param sql
     * @param <T>
     * @return
     */
    <T> List<T> query(Class<T> tClass,String sql);
}
